package com.grupobbva.iici.session;

import java.math.BigDecimal;
import java.util.Iterator;
import java.util.Vector;

import java.util.Collection;
import com.ibm.etools.service.locator.ServiceLocatorManager;
import com.grupobbva.iici.entity.Tiici_permiso_perfilLocalHome;
import com.grupobbva.iici.entity.Tiici_permiso_perfilLocal;
import com.grupobbva.iici.serializable.Perfil;
import com.grupobbva.iici.serializable.PermisoPerfil;

import com.grupobbva.iici.entity.Tiici_permiso_perfilKey;

import com.grupobbva.iici.entity.Tiici_perfilLocal;
import com.grupobbva.iici.entity.Tiici_perfilKey;
import com.grupobbva.iici.entity.Tiici_perfilLocalHome;

/**
 * Bean implementation class for Enterprise Bean: SessionPermisoPerfil
 */
public class SessionPermisoPerfilBean implements javax.ejb.SessionBean {
	private javax.ejb.SessionContext mySessionCtx;

	private final static String STATIC_Tiici_permiso_perfilLocalHome_REF_NAME = "ejb/Tiici_permiso_perfil";

	private final static Class STATIC_Tiici_permiso_perfilLocalHome_CLASS = Tiici_permiso_perfilLocalHome.class;

	private final static String STATIC_Tiici_perfilLocalHome_REF_NAME = "ejb/Tiici_perfil";

	private final static Class STATIC_Tiici_perfilLocalHome_CLASS = Tiici_perfilLocalHome.class;

	/**
	 * getSessionContext
	 */
	public javax.ejb.SessionContext getSessionContext() {
		return mySessionCtx;
	}

	/**
	 * setSessionContext
	 */
	public void setSessionContext(javax.ejb.SessionContext ctx) {
		mySessionCtx = ctx;
	}

	/**
	 * ejbCreate
	 */
	public void ejbCreate() throws javax.ejb.CreateException {
	}

	/**
	 * ejbActivate
	 */
	public void ejbActivate() {
	}

	/**
	 * ejbPassivate
	 */
	public void ejbPassivate() {
	}

	/**
	 * ejbRemove
	 */
	public void ejbRemove() {
	}

	public PermisoPerfil findPermisoPerfilxTipAccxValorRCP(String codReg,
			String codCat, String path) {
		PermisoPerfil permisoPerfil = null;
		String codRcp = null;

		for (int y = 1; y <= 3; y++) {

			switch (y) {
			case 1:
				codRcp = codReg;
				break;
			case 2:
				codRcp = codCat;
				break;
			case 3:
				codRcp = path;
				break;
			}

			Tiici_permiso_perfilLocal aTiicr_permiso_perfilLocal = null;

			Collection collectionPerfilLocal = find_Tiici_permiso_perfilLocalHome_findPermisoPerfilxTipAccxValorRCP(
					y, codRcp);

			if (collectionPerfilLocal.iterator().hasNext()) {
				aTiicr_permiso_perfilLocal = (Tiici_permiso_perfilLocal) collectionPerfilLocal
						.iterator().next();
			}

			if (aTiicr_permiso_perfilLocal != null) {
				Tiici_perfilLocal aTiicr_perfilLocal = find_Tiici_perfilLocalHome_findByPrimaryKey(new Tiici_perfilKey(
						aTiicr_permiso_perfilLocal.getCod_perfil()));

				permisoPerfil = new PermisoPerfil();
				permisoPerfil.setCodPerfil(aTiicr_permiso_perfilLocal
						.getCod_perfil());
				permisoPerfil.setTipoAcceso(aTiicr_permiso_perfilLocal
						.getTipo_acceso());
				permisoPerfil.setValorRCP(aTiicr_permiso_perfilLocal
						.getValor_rcp());

				if (aTiicr_perfilLocal != null) {
					Perfil perfil = new Perfil();
					perfil.setCodPerfil(aTiicr_perfilLocal.getCod_perfil());
					perfil.setDesPerfil(aTiicr_perfilLocal.getDes_perfil());
					permisoPerfil.setPerfil(perfil);
					return permisoPerfil;
				} else
					permisoPerfil = null;
			}
			if (permisoPerfil != null) {
				/*logger.info("Perfil encontrado: "
				 + permisoPerfil.getCodPerfil() + "-"
				 + permisoPerfil.getPerfil().getDesPerfil());
				 y = 4;*/
			}
		}
		if (permisoPerfil == null)
			return null;
		return permisoPerfil;

	}

	public Vector findAllPermisoPerfil(int flag) {
		Vector listoPermisos = null;
		Collection aCollection = find_Tiici_permiso_perfilLocalHome_findAllPermisoPerfil();
		if (aCollection != null && aCollection.size() > 0) {
			Iterator it = aCollection.iterator();
			listoPermisos = new Vector();

			while (it.hasNext()) {
				Tiici_permiso_perfilLocal local = (Tiici_permiso_perfilLocal) it
						.next();

				if (local != null) {
					PermisoPerfil objPermiso = new PermisoPerfil();
					Tiici_perfilLocal aTiici_perfilLocal = find_Tiici_perfilLocalHome_findByPrimaryKey(new Tiici_perfilKey(
							local.getCod_perfil()));
                   if(flag<0)
                   {
						if (!aTiici_perfilLocal.getCod_perfil().equals("1")) {
						objPermiso.setCodPerfil(local.getCod_perfil());
						objPermiso.setDesPerfil(aTiici_perfilLocal.getDes_perfil());
						objPermiso.setValorRCP(local.getValor_rcp());
						objPermiso.setTipoAcceso(local.getTipo_acceso());
						listoPermisos.add(objPermiso);
						}
                   }
                   else{
                   	objPermiso.setCodPerfil(local.getCod_perfil());
					objPermiso.setDesPerfil(aTiici_perfilLocal.getDes_perfil());
					objPermiso.setValorRCP(local.getValor_rcp());
					objPermiso.setTipoAcceso(local.getTipo_acceso());
					listoPermisos.add(objPermiso);
                   }
					
				}
			}
		}
		return listoPermisos;
	}

	public PermisoPerfil findPermisoPerfilById(String codPerfil,
			BigDecimal tipoAcceso, String valorRCP) {
		PermisoPerfil objPermiso = null;
		try {
			Tiici_permiso_perfilLocal aTiici_permiso_perfilLocal = find_Tiici_permiso_perfilLocalHome_findByPrimaryKey(new Tiici_permiso_perfilKey(
					codPerfil, tipoAcceso, valorRCP));

			if (aTiici_permiso_perfilLocal != null) {
				objPermiso = new PermisoPerfil();
				objPermiso.setCodPerfil(aTiici_permiso_perfilLocal
						.getCod_perfil());
				objPermiso.setValorRCP(aTiici_permiso_perfilLocal
						.getValor_rcp());
				objPermiso.setTipoAcceso(aTiici_permiso_perfilLocal
						.getTipo_acceso());
				return objPermiso;
			}
		} catch (Exception e) {
			//logger.info("Error al traer data de la tabla PermisoPerfil");

		}
		return objPermiso;
	}

	public boolean createPermisoPerfil(String codPerfil, BigDecimal tipoAcceso,
			String valorRCP) {
		try {
			Tiici_permiso_perfilLocal aTiici_permiso_perfilLocal = createTiici_permiso_perfilLocal(
					codPerfil, tipoAcceso, valorRCP);
			return true;

		} catch (Exception e) {
			//logger.info("Error al insertar data en PermisoPerfil "
			//	+ e.getMessage());
		}
		return false;

	}
	

	public boolean deletePermisoPerfil(String codPerfil, BigDecimal tipoAcceso,
			String valorRCP) {
		try {
			Tiici_permiso_perfilLocal aTiicr_permiso_perfilLocal = find_Tiici_permiso_perfilLocalHome_findByPrimaryKey(new Tiici_permiso_perfilKey(
					codPerfil, tipoAcceso, valorRCP));		
		if (aTiicr_permiso_perfilLocal != null) {
			aTiicr_permiso_perfilLocal.remove();
			return true;
		}
		} catch (Exception e) {
		//logger.info("Error al eliminar data en PermisoPerfil "
			//	+ e.getMessage());
		}
				return false;
		
	}
	
	public boolean updatePermisoPerfil(String codPerfil, BigDecimal tipoAcceso,
			String valorRCP,String cp, BigDecimal ta,
			String vr) {
		try{
			deletePermisoPerfil(cp,ta,vr);
			createPermisoPerfil(codPerfil,tipoAcceso,valorRCP);
		
		} catch (Exception e) {
			//logger.info("Error al actualizar tabla PermisoPerfil");
		}
		return false;
	}
	protected Collection find_Tiici_permiso_perfilLocalHome_findAllPermisoPerfil() {
		Tiici_permiso_perfilLocalHome aTiici_permiso_perfilLocalHome = (Tiici_permiso_perfilLocalHome) ServiceLocatorManager
				.getLocalHome(STATIC_Tiici_permiso_perfilLocalHome_REF_NAME,
						STATIC_Tiici_permiso_perfilLocalHome_CLASS);
		try {
			if (aTiici_permiso_perfilLocalHome != null)
				return aTiici_permiso_perfilLocalHome.findAllPermisoPerfil();
		} catch (javax.ejb.FinderException fe) {
			fe.printStackTrace();
		}
		return null;
	}
	protected Tiici_permiso_perfilLocal find_Tiici_permiso_perfilLocalHome_findByPrimaryKey(
			Tiici_permiso_perfilKey primaryKey) {
		Tiici_permiso_perfilLocalHome aTiici_permiso_perfilLocalHome = (Tiici_permiso_perfilLocalHome) ServiceLocatorManager
				.getLocalHome(STATIC_Tiici_permiso_perfilLocalHome_REF_NAME,
						STATIC_Tiici_permiso_perfilLocalHome_CLASS);
		try {
			if (aTiici_permiso_perfilLocalHome != null)
				return aTiici_permiso_perfilLocalHome
						.findByPrimaryKey(primaryKey);
		} catch (javax.ejb.FinderException fe) {
			fe.printStackTrace();
		}
		return null;
	}
	protected Tiici_perfilLocal find_Tiici_perfilLocalHome_findByPrimaryKey(
			Tiici_perfilKey primaryKey) {
		Tiici_perfilLocalHome aTiici_perfilLocalHome = (Tiici_perfilLocalHome) ServiceLocatorManager
				.getLocalHome(STATIC_Tiici_perfilLocalHome_REF_NAME,
						STATIC_Tiici_perfilLocalHome_CLASS);
		try {
			if (aTiici_perfilLocalHome != null)
				return aTiici_perfilLocalHome.findByPrimaryKey(primaryKey);
		} catch (javax.ejb.FinderException fe) {
			fe.printStackTrace();
		}
		return null;
	}
	protected Tiici_permiso_perfilLocal createTiici_permiso_perfilLocal(
			String cod_perfil, BigDecimal tipo_acceso, String valor_rcp) {
		Tiici_permiso_perfilLocalHome aTiici_permiso_perfilLocalHome = (Tiici_permiso_perfilLocalHome) ServiceLocatorManager
				.getLocalHome(STATIC_Tiici_permiso_perfilLocalHome_REF_NAME,
						STATIC_Tiici_permiso_perfilLocalHome_CLASS);
		try {
			if (aTiici_permiso_perfilLocalHome != null)
				return aTiici_permiso_perfilLocalHome.create(cod_perfil,
						tipo_acceso, valor_rcp);
		} catch (javax.ejb.CreateException ce) {
			ce.printStackTrace();
		}
		return null;
	}
	protected Collection find_Tiici_permiso_perfilLocalHome_findPermisoPerfilxTipAccxValorRCP(
			int tipo_acceso, String valor_rcp) {
		Tiici_permiso_perfilLocalHome aTiici_permiso_perfilLocalHome = (Tiici_permiso_perfilLocalHome) ServiceLocatorManager
				.getLocalHome(STATIC_Tiici_permiso_perfilLocalHome_REF_NAME,
						STATIC_Tiici_permiso_perfilLocalHome_CLASS);
		try {
			if (aTiici_permiso_perfilLocalHome != null)
				return aTiici_permiso_perfilLocalHome
						.findPermisoPerfilxTipAccxValorRCP(tipo_acceso,
								valor_rcp);
		} catch (javax.ejb.FinderException fe) {
			fe.printStackTrace();
		}
		return null;
	}
}
